﻿# -*- coding: utf-8 -*-
#开发日志
###

####
def devlog():
    '''
    ####第一部分
    要完成的功能@21日
    1.类似三国杀里面的等待功能
    2.当用户都进入时，想向客户端发送各个用户的信息——有客户端进行处理
    3.当某个用户断线时，给出信息
    4.当用户的分数变化时，向其它用户发送该分数更新信息。
    5.每一局的分数等信息写入总的数据库    
    
    '''
    
    '''
    第二部分
    1.pvz的地图部分是在服务器端做的。
    2.一些道具的生成也在由服务器发送消息来得到的。检测是否完成该关。
    
    '''
    pass

class CRoomDevelop():
    def __init__(self):
        pass
    def room_base(self):
        '''
         1.搭建框架
            房间内的必须函数
            1)__init__
            2)cghall_on_player_enter_room
            某一个用户进入房间调用，必须重载
            完成如下操作；
            a)向用户发送游戏模式（房间主人）
                send_game_mode
            b)向用户发送服务器端保存的用户信息
                send_user_in
            c)向用户发送服务器端保存的用户私有信息
                send_player_secret_info
                
            d)向其它用户发送信息    
            
            3)cghall_on_player_leave_room
            某一个用户退出房间时调用，必须重载
            完成如下操作
            a)检测状态，如果是断线或者逃跑，记录
            b)向其它用户通知，某用户离开
            
            c)存疑
            self.objGameLogic.play_leave结算
            
            d)
            4)cghall_clean
            在房间对象被销毁前调用，处理init中的相关引用
            5)cghall_get_player_by_hid
            6)cghall_get_player_by_uid
            以上两个函数重载，如果你重定义了CPlayer，请重载
            7)cghall_on_add_achievement_result
            写用户成就系统的，需要重载
        '''   
        pass
    def room_server_respond_msg(self):
        '''
         2.服务器端响应客户端消息
        1)on_player_start_game
            pass
            
        2)on_player_leave_game
            告诉房间，用户退出
            调用cghall_tell_hall_player_leave_room
        3)on_game_start
        修改状态
        self.iStatus = td_const.GAME_PLAYING
        调用逻辑引擎开始游戏
        4)on_game_end
        修改状态
        room_player.game_end(self.iStage, game_player)
        进入结算
        send_game_end信息,更新客户端消息
        
        5)on_game_playing_event
        在游戏处于 Playing状态时，
        处理子事件，可以扩展用，在其它模块添加相关的处理函数模块
        on_player_change_score
        ####该函数要修改为其它模块进行
                    主要工作是在do_change_score中做的
                       扩展好的内容
        ''' 
        pass
    def room_server_send_msg(self):
        '''
         3.服务器端向客户端发送的消息
        该消息的定义房间内可以直接调用，负责对消息的封装，
        消息的定义在td_cmd的CMD_MAP中定义，客户端和服务器端的消息要一致。
        向系统注册是在room_extends
        register_game_room_msgdefine_and_callback
        对应于其msg字典。
        1)send_all
        2)send_to_user
        3)send_user_in
        映射为消息game_sc_player_in
        4)send_user_out
        映射为消息game_sc_player_out
        5)send_game_mode
        映射为消息game_sc_game_mode
        消息的格式为
        6)send_game_end
        映射为消息game_sc_game_end
        7)send_player_secret_info
        映射为消息game_sc_player_secret_info
        8)
        映射消息为
        game_sc_player_detail_info
        9)
        映射消息为
        game_sc_player_finish_achieve
        10)
        映射消息为
        game_player_end_info
        '''
        pass
    def room_assist_fun(self):
        '''
          4.辅助函数
            用户管理
        1)add_player
        2)del_player
        3)get_player_by_side
        4)get_empty_side
        
        
        '''
        pass
class CRoomPlayerDevelop():
    '''
    Player的类型为HallPlayer
    #房间内玩家对象类
    '''
    def __init__(self): 
        pass
    def player_base(self):
        '''
        1.clean
         自定义的clean函数，回收引用
         
         2.
        '''
        pass
    def player_private(self):
        '''
        1.read_bufs
        2.write_bufs
        '''
        
        pass
    def payer_respond(self): 
        '''
         在服务器端响应的代码，支持的接口
         1.on_game_init
         玩家发送游戏初始化信息时调用
         2.game_init
         游戏初始化
         3.game_start
         游戏正式
         4.update_achieve
         更新成就
        '''
        pass
      
      
class CGamePlayerDevelop():
    '''
    记录每局游戏的的用户信息
    '''
    def __init__(self):
        pass      
class CMsgMap(object):
    '''
    消息管理模块是处理
    '''
    def __init__(self):
        '''
        #房间对象的引用，消息发送和写日志用到
        self.objRoom = objRoom    
        #传输对象的引用，消息打包的时候用到           
        self.objMsgMgr = hall_callback.get_game_room_msgmgr()     
        #注册事件响应字典
        self.dicEventFunc = {}
          
        '''
        pass
    
          
